package org.gpp.proj1.robot.part;

import java.util.List;
import java.util.Set;

import org.gpp.proj1.robot.modifier.Modifier;
import org.gpp.proj1.robot.part.emissor.Emissor;

import com.jme.scene.Spatial;

public interface Part {
	public static final String HEAD = "head";
	public static final String TORSO = "torso";
	public static final String ARM = "arm";
	public static final String LEGS = "legs";
	
	public static final String ENERGY = "energy";
	public static final String ATTACK = "attack";
	public static final String DEFENSE = "defense";
	public static final String SPEED = "speed";
	public static final String AMMO = "ammo";
	public static final String PRICE = "price";
	public static final String NAME = "name";
	
	/**
	 * @return The name of the part
	 */
	public String getName();
	
	/**
	 * @return The part's type
	 */
	public PartType getPartType();

	/**
	 * @return The part's price
	 */
	public int getPrice();
	
	/**
	 * @return The part's modifiers
	 */
	public List<Modifier> getModifiers();
	
	/**
	 * @param name
	 * @return The model with the given name
	 */
	public Spatial getModel( String name );
	
	/**
	 * @return The part's model name list
	 */
	public Set<String> getModelNames();
	
	/**
	 * @param name
	 * @return The particle emissor node with the given name
	 */
	public Emissor getEmissor( String name );
	
	/**
	 * @param attribute
	 * @return The part's attribute
	 */
	public String getAttribute( String attribute );
	
	/**
	 * @return A list with this part's actions
	 */
	public List<String> getActions();
}
